package it.giuseppetrisciuoglio.lyrics.processor.artista;

import it.giuseppetrisciuoglio.lyrics.persistence.entity.Artista;
import it.giuseppetrisciuoglio.lyrics.persistence.repository.ArtistaRepository;
import it.giuseppetrisciuoglio.lyrics.processor.BaseProcessor;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

@Service
public class ArtistaCheckStrategy extends BaseProcessor {
	
	@Autowired
	private ArtistaRepository artistaRepository;
	private final transient Logger log = LoggerFactory.getLogger(getClass());
	
	public void checkAndQueue(String nomeArtista) {
		log.debug("check(): nomeArtista={}", nomeArtista);
		Long checkArtista = artistaRepository.countArtistaByNome(nomeArtista.trim().toLowerCase());
		log.debug("check(): checkArtista={}", checkArtista);
		if (checkArtista == null || checkArtista.equals(0L)){
			log.debug("check(): l'artista non è stato trovato.");
			sendMessageToArtistaCreatorProcessor(nomeArtista);
			return;
		}
		log.debug("check(): artista '{}' già presente, returning.", nomeArtista);
		Artista artista = artistaRepository.findByNome(nomeArtista.trim());
		if (artista != null){
			log.debug("check(): send start lyrics and album processor for artista={}", artista);
			sendMessageToLyricsDownloadProcessor(artista.getId());
			sendMessageToAlbumInfoDownloadProcessor(artista.getId());
			sendMessageToYoutubeDownloadProcessor(artista.getId());
		}
		else{
			log.debug("check(): artista '{}' not found on db. Stop processing.", nomeArtista);
		}
	}

}
